import { PanelDataConfig, initComponent } from "../ui-components/edit";
import { ArrayOpt } from "./tools";

global.GEditorData = {
	config: {}
};

global.GEditorConfig = {
	isEditable: true
};

/**
 * 默认配置初始化
 */
const defaultConfigInit = () => {
	initComponent();
};

/**
 * 自定义组件初始化
 */
const customComponentInit = () => {
	// 此处添加自定义组件注册数据
	// regCustomComponent();
};

/**
 * 自定义配置初始化
 */
const customConfigInit = () => {
	// 自定义组件初始化
	customComponentInit();

	// 自定义其他数据初始化（待添加）
};

/**
 * 面板配置初始化
 * @returns 格式： {base: {}, template: {}...}
 */
const panelConfigInit = () => {
	const panelData = PanelDataConfig;

	const configData = global.GEditorData.config;
	const configDataKeys = Object.keys(configData);

	const panelDataMap = ArrayOpt.toMap(panelData, "type");

	configDataKeys.map(key => {
		const item = configData[key];
		const panel = item.panel;

		if (panelDataMap[panel.group]) {
			panelDataMap[panel.group].body.push(panel);
		}
	});

	return Object.values(panelDataMap);
};

export const initEditGlobalData = () => {
	// console.log(global.GEditorData);

	// 默认初始化
	defaultConfigInit();

	// 自定义配置初始化
	customConfigInit();

	// 初始化生成左侧数据
	const panelConfig = panelConfigInit(global.GEditorData);

	return {
		panelConfig,
		globalEditorData: global.GEditorData
	};
};
